home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / UTILS / AMOSCOMP.DMS / in.adf / Squash_A_Bob.AMOS / Squash_A_Bob.amosSourceCode
Encoding:
AMOS Source Code  |  1993-02-25  |  2.3 KB  |  85 lines

  1. '----------------------------------------------------------------------------
  2. '                          Squash_a_Bob.AMOS   
  3. '
  4. '                          By Francois Lionet  
  5. '----------------------------------------------------------------------------
  6. F$=Fsel$("*.Abk","","Enter sprite bank to load")
  7. If F$="" : Edit : End If 
  8. Load F$
  9. If Length(1)=0 : Edit : End If 
  10. '
  11. MXSPR=Length(1)
  12. Print "Number of bobs: ";MXSPR
  13. Repeat 
  14.    Input "Start at which bob? ";STSPR
  15. Until STSPR>=1 and STSPR<=MXSPR
  16. Repeat 
  17.    Input "End at which bob? ";ENSPR
  18. Until ENSPR>=STSPR and ENSPR<=MXSPR
  19. Repeat 
  20.    Input "Number of colours? ";NCOL
  21.    NPLANE=1 : C=2
  22.    While C<>NCOL and NPLANE<7
  23.       Inc NPLANE : C=C*2
  24.    Wend 
  25. Until NPLANE<7
  26. Repeat 
  27.    Input "Enter bank number to create: ";BNUMB
  28. Until BNUMB>1 and BNUMB<16
  29. Repeat 
  30.    BWORK=Rnd(8)+6
  31. Until BWORK<>BNUMB
  32. '
  33. Screen Open 0,320,200,NCOL,0
  34. Flash Off : Get Sprite Palette 
  35. Paper 0 : Pen 1 : Clw 
  36. BIGX=0 : BIGY=0
  37. '
  38. For N=1 To MXSPR
  39.    If N>=STSPR and N<=ENSPR
  40.       Cls 0,0,0 To 320,100
  41.       A=Sprite Base(N)
  42.       SX=Deek(A)*16 : SY=Deek(A+2) : ICOL=Deek(A+4)
  43.       If ICOL<>0
  44.          Paste Bob 0,0,N
  45.          Erase BWORK : Pack 0 To BWORK,0,0,SX,SY
  46.          Add PSIZE,Length(BWORK)
  47.          Add NSIZE,((SX*SY)/8)*NPLANE
  48.          Print At(0,24);"Normal size";NSIZE;" / Packed size";PSIZE;
  49.          If SX>BIGX
  50.             BIGX=SX
  51.          End If 
  52.          If SY>BIGY
  53.             BIGY=SY
  54.          End If 
  55.       End If 
  56.    End If 
  57. Next 
  58. '
  59. Reserve As Data BNUMB,PSIZE+MXSPR*10+4
  60. APACK=Start(BNUMB)+MXSPR*10
  61. Clw : Centre At(,24)+"...Final size:"+Str$(PSIZE+MXSPR*10+4)+" ("+Str$(NSIZE)+" )..."
  62. Centre At(,23)+"Largest X: "+Str$(BIGX)+"  Largest Y: "+Str$(BIGY)
  63. '
  64. For N=1 To MXSPR
  65.    If N>=STSPR and N<=ENSPR
  66.       Cls 0,0,0 To 320,100
  67.       A=Sprite Base(N)
  68.       SX=Deek(A)*16 : SY=Deek(A+2) : ICOL=Deek(A+4)
  69.       If ICOL<>0
  70.          Paste Bob 0,0,N
  71.          Erase BWORK : Pack 0 To BWORK,0,0,SX,SY
  72.          AOFF=Start(BNUMB)+(N-1)*10
  73.          Doke AOFF,(APACK-Start(BNUMB))/2
  74.          Loke AOFF+2,Leek(A) : Loke AOFF+6,Leek(A+6)
  75.          Copy Start(BWORK),Start(BWORK)+Length(BWORK) To APACK
  76.          Add APACK,Length(BWORK)
  77.       End If 
  78.    End If 
  79. Next 
  80. '
  81. F$=Fsel$("*.Abk","","Please enter saved bank name...")
  82. If F$<>""
  83.    Save F$,BNUMB
  84. End If 
  85. Erase 1 : Erase BNUMB : Erase BWORK